// 对axios进行二次封装
// 1.设置基地址
// 2、封装通用函数发请求
import axios from 'axios'
import store from '@/store'
const instance = axios.create({
  baseURL: 'https://apipc-xiaotuxian-front.itheima.net' // 基地址
  // timeout: 5000 // 最长等待时间五秒不回来报错
})

// 请求拦截器 发请求之前进入拦截器，添加token
instance.interceptors.request.use(
  config => {
    const token = store.state.user.profile.token
    if (token) {
      // 请求头
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  })

// 响应拦截器 在响应从服务器回来之后，先进入响应拦截器函数 tokn过期  简化data
instance.interceptors.response.use(
  response => response.data,
  error => {
    return Promise.reject(error)
  })

// 定义一个函数发请求
// request（‘地址’，请求方式，本次请求携带的参数）===》返回结果
function request (url, methods, queryData) {
  return instance({
    // url: 'XXX',
    // methods: 'XXX',
    // post:data   get:params
    // 属性名前加【】 表示动态的属性名
    // toLowerCase() 判断前的处理，把大写转为小写
    url: url,
    method: methods,
    [methods.toLowerCase() === 'get' ? 'params' : 'data']: queryData
  })
}

// export default instance
export default request
